home *** CD-ROM | disk | FTP | other *** search
/ Delphi 2.0 - Programmer's Utilities Power Pack / Delphi 2.0 Programmer's Utilities Power Pack.iso / s_to_z / tpack / toolbar.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-09-15  |  6.2 KB  |  265 lines

  1. unit Toolbar;
  2. {defines a bunch of customized panels, holds a toolbutton and edit-rightaligned type also.}
  3.  
  4. interface
  5.  
  6. uses Forms, SysUtils, WinProcs, WinTypes,
  7.   Classes, Controls, Buttons, StdCtrls, ExtCtrls;
  8.  
  9. type
  10.   TExtendedPanel = class(TPanel)
  11.   private
  12.     procedure SetUniqueName(const Value:String);
  13.   public
  14.     constructor Create(aOwner:TComponent); Override;
  15.     property UniqueName:String write SetUniqueName stored false;
  16.   published
  17.     end;
  18.  
  19.   TToolBar = class(TExtendedPanel)
  20.   public
  21.     constructor Create(aOwner:TComponent); Override;
  22.     end;
  23.  
  24.   TStatusBar = class(TExtendedPanel)
  25.   public
  26.     constructor Create(aOwner:TComponent); Override;
  27.     end;
  28.  
  29.   TStatusPanel = class(TExtendedPanel)
  30.   private
  31.     procedure ShowHint(Sender: TObject);
  32.   public
  33.     constructor Create(aOwner:TComponent); Override;
  34.     procedure Loaded; Override;
  35.     end;
  36.  
  37.   TMpModes=(mpIdle,mpTime,mdDate,mpResources);
  38.   TMessagePanel = class(TExtendedPanel)
  39.   protected
  40.     fmpMode: TmpModes;
  41.     fTimer: TTimer;
  42.     fPriorIdle: TIdleEvent;
  43.   private
  44.     procedure IdleEvent(Sender: TObject; var Done: Boolean);
  45.     procedure UpdatePanel(Sender: TObject);
  46.     procedure SetMpMode(Value:TmpModes);
  47.   public
  48.     constructor Create(aOwner:TComponent); Override;
  49.     destructor Destroy; Override;
  50.     procedure Click; Override;
  51.   published
  52.     property mpMode: TmpModes read fmpMode write SetMpMode;
  53.     end;
  54.  
  55. {------------------------------------------------------------------------------}
  56.  
  57.   TToolButton = class(TSpeedButton)
  58.   private
  59.     fLeaveSpace: Boolean;
  60.   public
  61.     constructor Create(aOwner:TComponent); Override;
  62.     procedure Loaded; Override;
  63.   published
  64.     property LeaveSpace: Boolean read fLeaveSpace write fLeaveSpace;
  65.     end;
  66.  
  67.   TEdRight = class(TEdit)
  68.   private
  69.     { Private declarations }
  70.   protected
  71.     { Protected declarations }
  72.   public
  73.     { Public declarations }
  74.     procedure CreateParams(var Params: TCreateParams); Override;
  75.   published
  76.     { Published declarations }
  77.   end;
  78.  
  79. {------------------------------------------------------------------------------}
  80.  
  81. implementation
  82.  
  83. {------------------------------------------------------------------------------}
  84.  
  85. constructor TToolButton.Create(aOwner:TComponent);
  86. begin
  87.   inherited Create(aOwner);
  88.   Top:=2;
  89.   if csDesigning in ComponentState then
  90.     SetBounds(0, 0, 20, 20);
  91. end;
  92.  
  93. procedure TToolbutton.Loaded;
  94. begin
  95.   inherited Loaded;
  96. end;
  97.  
  98. {------------------------------------------------------------------------------}
  99.  
  100. constructor TExtendedPanel.Create(aOwner:TComponent);
  101. begin
  102.   inherited Create(aOwner);
  103. end;
  104.  
  105. procedure TExtendedPanel.SetUniqueName(const Value:String);
  106. var
  107.   i:integer;
  108.   a:string[4];
  109. begin
  110.   a:='1';
  111.   i:=1;
  112.   while true do
  113.     if owner.findcomponent(Value+a)=nil then begin
  114.       name:= Value+a;
  115.       break;
  116.       end
  117.     else begin
  118.       inc(i);
  119.       a:=inttostr(i);
  120.       end;
  121. end;
  122.  
  123. {------------------------------------------------------------------------------}
  124.  
  125. constructor TToolBar.Create(aOwner:TComponent);
  126. begin
  127.   inherited Create(aOwner);
  128.   if aOwner.Name<>'' then begin
  129.     Align:=alTop;
  130.     Height:=23;
  131.     UniqueName:='ToolBar';
  132.     Caption:='';
  133.     end;
  134. end;
  135.  
  136. {------------------------------------------------------------------------------}
  137.  
  138. constructor TStatusBar.Create(aOwner:TComponent);
  139. begin
  140.   inherited Create(aOwner);
  141.   if aOwner.Name<>'' then begin
  142.     Top:=TForm(aOwner).Height-1;
  143.     Align:=alBottom;
  144.     Height:=18;
  145.     UniqueName:='StatusBar';
  146.     Caption:='';
  147.     with TMessagePanel.Create(aOwner) do
  148.       Parent:=Self;
  149.     with TStatusPanel.Create(aOwner) do
  150.       Parent:=Self;
  151.     end;
  152. end;
  153.  
  154. {------------------------------------------------------------------------------}
  155.  
  156. constructor TStatusPanel.Create(aOwner:TComponent);
  157. begin
  158.   inherited Create(aOwner);
  159.   if aOwner.Name<>'' then begin
  160.     Align:=alClient;
  161.     UniqueName:='StatusPanel';
  162.     Caption:='';
  163.     Alignment := taLeftJustify;
  164.     BevelOuter := bvLowered;
  165.     end;
  166.   Loaded;
  167. end;
  168.  
  169. procedure TStatusPanel.Loaded;
  170. begin
  171.   inherited Loaded;
  172.   Application.OnHint:=ShowHint;      {WATCH IT!!! THIS is a pretty big assumption}
  173.   Application.ShowHint:=True;
  174.   Application.HintPause:=300;
  175. end;
  176.  
  177. procedure TStatusPanel.ShowHint(Sender: TObject);
  178. begin
  179.   Caption := Application.Hint;
  180. end;
  181.  
  182. {------------------------------------------------------------------------------}
  183.  
  184. constructor TMessagePanel.Create(aOwner:TComponent);
  185. begin
  186.   inherited Create(aOwner);
  187.  
  188.   if aOwner.Name<>'' then begin
  189.     Align:=alRight;
  190.     Width:=85;
  191.     UniqueName:='MessagePanel';
  192.     Caption:='';
  193.     {}
  194.     BevelOuter := bvLowered;
  195.     Alignment := taCenter{LeftJustify};
  196.     {}
  197.     fPriorIdle:= Application.OnIdle;
  198.     Application.OnIdle:=IdleEvent;
  199.     end;
  200.  
  201.   fmpMode:=mpTime;
  202.   fTimer:=TTimer.Create(self);
  203.   fTimer.Interval:=1000;
  204.   fTimer.Enabled:=True;
  205.   fTimer.OnTimer:=UpdatePanel;
  206. end;
  207.  
  208.  
  209. destructor TMessagePanel.Destroy;
  210. begin
  211.   fTimer.enabled:=false;
  212.   fTimer.free;
  213.   Application.OnIdle:=fPriorIdle;
  214.   inherited Destroy;
  215. end;
  216.  
  217. procedure TMessagePanel.SetMpMode(Value:TMpModes);
  218. begin
  219.   if Value<>fmpMode then begin
  220.     fmpMode:=Value;
  221.     fTimer.Enabled:=Value<>mpIdle;
  222.     end;
  223. end;
  224.  
  225. procedure TMessagePanel.Click;
  226. begin
  227.   if fmpmode<high(tmpmodes) then
  228.     mpMode:=succ(fMpMode)
  229.   else
  230.     mpmode:=low(tmpmodes);
  231.   inherited Click;
  232. end;
  233.  
  234. procedure TMessagePanel.IdleEvent(Sender: TObject; var Done: Boolean);
  235. begin
  236.   if assigned(fPriorIdle) then
  237.     fPriorIdle(Sender,Done);
  238.   UpdatePanel(Sender);
  239. end;
  240.  
  241. procedure TMessagePanel.UpdatePanel(Sender: TObject);
  242. begin
  243.   case fmpMode of
  244.     mpIdle,
  245.     mpTime: Caption := TimeToStr(Time);
  246.     mdDate: Caption := DateToStr(Now);
  247.   else
  248.     Caption:= format('%d MB, %d%%',
  249.      [GetFreeSpace(0) shr 20, GetFreeSystemResources(0)]);
  250.     end;
  251. end;
  252.  
  253. {------------------------------------------------------------------------------}
  254.  
  255. procedure TEdRight.CreateParams(var Params: TCreateParams);
  256. begin
  257.   inherited CreateParams(Params);
  258.   Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
  259. end;
  260.  
  261. {------------------------------------------------------------------------------}
  262.  
  263. end.
  264.  
  265.